觀察到如果使用requests函式庫取得imgur圖片資源的話回傳是remove.png或是說導回首頁的話一般代表圖片不存在,分享看看希望知道更簡單判斷方法的朋友幫忙反饋,或是給也許沒有觀察到這個現象的朋友參考。
import requests
def is_imgur_image_valid(url):
"""
檢查 Imgur 圖片 URL 是否有效。
判斷邏輯:
- 使用 HEAD 請求追蹤重定向,檢查最終 URL。
- 否則,判斷為有效圖片。
- 任何請求相關錯誤都視為圖片無效。
Args:
url (str): Imgur 圖片的 URL。
Returns:
bool: 如果圖片有效則返回 True,否則返回 False。
"""
headers = {
"User-Agent": "your agent try google my user agent in a browser",
}
try:
# 使用 HEAD 請求並允許追蹤重定向
response = requests.head(url, headers=headers, allow_redirects=True, timeout=10)
response.raise_for_status() # 如果最終狀態碼是 4xx/5xx 會拋出異常
final_url = response.url
# 判斷最終 URL 是否導向 Imgur 首頁或 removed.png
if final_url == "https://imgur.com/" or final_url == "https://i.imgur.com/" or final_url == "https://i.imgur.com/removed.png":
return False
# 如果沒有拋出異常且沒有導向首頁或無效頁面,則判斷為有效圖片
return True
except requests.exceptions.RequestException:
# 處理所有請求相關錯誤 (如網路連接問題、超時、DNS 錯誤、4xx/5xx 等)
return False
except Exception:
# 處理其他未預期的錯誤
return False
語言是Python,有效的圖片會回傳True,無效的圖片會回傳False